---
id: mqttclientdemo
title: 使用MqttClient插件
sidebar_label: 8.4、使用MqttClient插件
---

上一篇文章：[使用MqttServer插件](mqttserverdemo) 已经介绍了网关提供的MqttServer使用方式

下面演示MqttClient插件使用

**工具**

Mqtt Broker(服务端)：Emqx

### （一）建立上传设备
<img src={require('../../static/img/mqttclientdemo1.png').default} width="400" />
<img src={require('../../static/img/mqttclientdemo2.png').default} width="400"/>

 设备属性默认，允许写入,账号密码可以为空，根据emqx服务设置定义

### （二）启动Emqx服务
```
cd/d D:\emqx\bin //emqx bin目录
emqx start
goto end
```

### （三）重启采集线程

![](/img/modbusdemo4.png)

点击右边浮动按钮，全部重启

![](/img/mqttclientdemo3.png)

重启完成后可以看到上传设备状态中，mqttClientTest已经连接正常(在线)

### （四）Mqtt测试客户端连接到Emqx
 <img src={require('../../static/img/mqttserverdemo3.png').default} />
 
 使用Mqttx连接到网关

- 连接成功后，添加设备订阅Topic
<img src={require('../../static/img/mqttserverdemo4.png').default} width="600" />

- 添加变量订阅Topic，效果与设备Topic一致

<img src={require('../../static/img/mqttserverdemo6.png').default} width="400" />

- 当前变量值变化时，也会同步接收到新数据

<img src={require('../../static/img/mqttserverdemo8.png').default} width="800" />

- 同理，设备状态变化时，同步接收到新数据

<img src={require('../../static/img/mqttserverdemo9.png').default} width="800" />

- 当客户端(其他订阅者)需要获取全部信息时，可以发布请求Rpc

<img src={require('../../static/img/mqttclientdemo4.png').default} width="600"/>

往ThingsGateway/Quest 发布任何内容，网关都会返回全部信息都对应Topic

- Rpc写入变量值

首先需要订阅Rpc状态返回的Topic，在前面我们定义Topic为ThingsGateway/RpcSub

<img src={require('../../static/img/mqttserverdemo10.png').default} width="600" />

然后往ThingsGateway/RpcWrite Topic上发布新内容,具体格式可查看MqttServer插件说明

<img src={require('../../static/img/mqttserverdemo11.png').default} width="800" />

可以看到回复结果为Success True，并且在订阅变量Topic时也会接收到新的变量值

